//go:build unit
// +build unit

package reporting

import (
	"os"
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestVulnerabilityReportToMarkdown(t *testing.T) {
	t.Parallel()
	t.Run("success - empty", func(t *testing.T) {
		t.Parallel()
		vulReport := VulnerabilityReport{}
		_, err := vulReport.ToMarkdown()
		assert.NoError(t, err)
	})

	t.Run("success - filled", func(t *testing.T) {
		t.Parallel()
		vulReport := VulnerabilityReport{
			BlackDuckProjectLink: "https://the.link.to.the.project.version",
			ProjectName:          "theProjectName",
			ProjectVersion:       "theProjectVersion",
			ArtifactID:           "theArtifact",
			Branch:               "main",
			CommitID:             "acb123",
			Description:          "This is the test description.",
			DependencyType:       "direct",
			Origin:               "Origin",
			Footer:               "This is the test footer",
			Group:                "the.group",
			PipelineName:         "thePipelineName",
			PipelineLink:         "https://the.link.to.the.pipeline",
			PublishDate:          "2022-06-30",
			Resolution:           "This is the test resolution.",
			Score:                7.8,
			Severity:             "high",
			Version:              "1.2.3",
			PackageURL:           "pkg:generic/the.group/theArtifact@1.2.3",
			VulnerabilityLink:    "https://the.link/to/the/vulnerability",
			VulnerabilityName:    "CVE-Test-001",
		}
		goldenFilePath := filepath.Join("testdata", "markdownVulnerability.golden")
		expected, err := os.ReadFile(goldenFilePath)
		assert.NoError(t, err)

		res, err := vulReport.ToMarkdown()
		assert.NoError(t, err)
		assert.Equal(t, string(expected), string(res))
	})
}
